Ethical Software Engineering
Moving Beyond Technical Correctness
Software engineering is often framed as a neutral, technical discipline focused on efficiency, scalability, and innovation. However, recent scholarship challenges this assumption by showing how software systems actively shape social behavior, decision-making, and power relations.
Assignment Overview
This presentation engages with four key resources to explore ethical engineering practice and professional responsibility:
- Generative AI Is Not Inevitable (Bender & Hanna)
- The Invisible Networks Shaping Your Everyday Life
- Climate Risk and Normative Uncertainties (Taebi et al.)
- Buddhism and AI Ethics (Priyadarshi)
Through these resources, we examine how ethical responsibility in software engineering extends far beyond writing functional code to encompass infrastructure dependencies, social impacts, and professional accountability.
Beyond Code
Expanding Our View of Responsibility
The Inevitability Narrative
In Generative AI Is Not Inevitable, Bender and Hanna argue that the widespread belief in AI's inevitability is not a technical truth but a narrative that removes human agency and accountability from engineering decisions.
Hidden Infrastructure
The Invisible Networks Shaping Your Everyday Life highlights how modern life is structured by hidden infrastructures—energy systems, data networks, and computational pipelines—that quietly constrain individual choice.
Software does not operate in isolation; it depends on material systems with environmental and social consequences. For software engineers, this means ethical responsibility extends beyond writing functional code to understanding how digital systems interact with physical infrastructure, labour, and climate impact.
APEGA Perspective
This challenges the idea that engineers are only responsible for the technical correctness of their work. The APEGA Code of Ethics requires engineers to hold paramount the safety, health, and welfare of the public. When software systems shape access to services, automate decisions, or consume significant energy resources, ethical responsibility cannot be deferred to "the system" or "the algorithm."
Normative Uncertainty
Navigating Ethical Complexity
No Single Correct Solution
Ethical engineering decisions rarely present a single, clearly correct solution. Taebi et al. describe this condition as normative uncertainty: situations where multiple courses of action are morally defensible but incompatible, or where no option is fully ethical.
In climate risk governance, for example, adaptation strategies may protect one population while disadvantaging another, raising unresolved questions of justice, responsibility, and intergenerational equity.
Application to Software Engineering
This concept directly applies to software engineering. Automated decision systems in finance, healthcare, or criminal justice may improve efficiency while simultaneously amplifying bias or excluding vulnerable groups.
Taebi et al. argue for approaches such as Wide Reflective Equilibrium and adaptive planning to make ethical tensions explicit rather than hidden within technical design choices.
Beyond Metrics
A complementary perspective is offered in Buddhism and AI Ethics, where Tenzin Priyadarshi critiques the overreliance on metrics and optimization in technology development.
While quantitative measures are useful, reducing human wellbeing to numerical targets risks overlooking values such as compassion, trust, and contextual judgment. Optimizing software purely for speed, accuracy, or profit may inadvertently undermine the social fabric it operates within.
What This Means for Practice
Ethical software engineering requires:
- Acknowledging uncertainty and complexity
- Resisting simplistic metrics
- Engaging diverse voices early in the design process
- Making trade-offs explicit and transparent
Rather than retrofitting ethics after harm has occurred.
Personal & Professional Accountability
My Role as a Future Engineer
Reshaping My Understanding
As a future software engineer, these resources have reshaped how I understand professional accountability. Ethical practice is not limited to complying with regulations or avoiding obvious harm; it involves actively questioning the assumptions embedded in software systems.
Beyond Technical Execution
The narrative that technology is inevitable can lead engineers to disengage from moral responsibility, yet APEGA explicitly emphasizes personal accountability for professional judgment.
Questions I Must Ask
In practice, this means I must consider:
- Not only what a system can do, but what it should do
- Whether efficiency gains justify social or environmental costs
- Whether datasets reflect structural bias
- Whether deploying a system at scale is ethically defensible
Humility and Openness
Inspired by Buddhist ethics, this also requires humility—recognizing the limits of technical knowledge and remaining open to qualitative perspectives that cannot be reduced to metrics.
A Practice of Ongoing Reflection
Ultimately, ethical software engineering is a practice of ongoing reflection. By acknowledging uncertainty, engaging stakeholders, and resisting narratives that detach engineers from the consequences of their work, I can better uphold my obligations to:
- The public
- The profession
- Society at large
Conclusion
Ethical Engineering as Active Choice
Key Takeaways
1. Reject Inevitability
Technology is not an unstoppable force. Engineers have agency at every decision point and must actively choose ethical paths.
2. Expand Responsibility
Ethical accountability extends beyond code to infrastructure, social impact, and long-term consequences.
3. Embrace Complexity
Normative uncertainty is inherent in engineering decisions. Rather than seeking simple solutions, we must engage transparently with trade-offs.
4. Look Beyond Metrics
Human values like compassion, trust, and justice cannot be reduced to optimization targets. Ethical practice requires qualitative judgment.
Final Reflection
The APEGA Code of Ethics states that engineers must "hold paramount the safety, health, and welfare of the public." This is not a passive obligation—it requires:
- Active questioning of design assumptions
- Ongoing engagement with diverse stakeholders
- Courage to refuse unethical work
- Humility about the limits of technical knowledge
By rejecting narratives of inevitability, acknowledging normative uncertainty, and maintaining personal accountability, I commit to practicing software engineering not just as a technical discipline, but as an ethical profession.
References
[1] E. M. Bender and A. Hanna, "Generative AI Is Not Inevitable"
[2] "The Invisible Networks Shaping Your Everyday Life"
[3] S. H. Taebi et al., "Climate Risk and Normative Uncertainties"
[4] T. Priyadarshi, "Buddhism and AI Ethics"